/* eslint-disable  */
import { uploadToken } from '../api/Cache';
import * as qiniu from 'qiniu-js';

export default class {
    constructor(driver = 'qiniu') {
        this.driver = driver;
    }

    /**
     * 获取上传参数
     */
    getParams(driver = this.driver, dir = null) {
        uploadToken(driver, dir).then(res => this.params = res);
        return this;
    }

    /**
     * 创建实例
     * @param file 单个文件信息
     * @param params 上传参数
     */
    observable(file, params) {
        const config = {
            retryCount: 6, // 上传自动重试次数（整体重试次数，而不是某个分片的重试次数）；默认 3 次（即上传失败后最多重试两次）。
            region: null, // 选择上传域名区域；当为 null 或 undefined 时，自动分析上传域名区域。
        };
        const putExtra = {
            fname: '', // 文件原文件名
            params: {}, // 用来放置自定义变量，自定义变量格式请参考qiniu-js的官方文档
            mimeType: null, // null || array，用来限制上传文件类型，为 null 时表示不对文件类型限制
        };
        // file文件数据， key 上传参数的key， token 上传参数的token， putExtra， config
        return qiniu.upload(file, params.form.key, params.form.token, putExtra, config);
    }
}
